///******************************************************************************* // * Copyright (c) 2005, 2006 IBM Corporation and others. // * All rights reserved. This program and the accompanying materials // * are made available under the terms of the Eclipse Public License v1.0 // * which accompanies this distribution, and is available at // * http://www.eclipse.org/legal/epl-v10.html // * // * Contributors: // * IBM Corporation - initial API and implementation // *******************************************************************************/ // //package org.eclipse.ui.tests.contexts; // //import java.util.HashSet; //import java.util.Set; // //import org.eclipse.core.commands.Command; //import org.eclipse.core.commands.CommandManager; //import org.eclipse.core.commands.ParameterizedCommand; //import org.eclipse.core.commands.common.NotDefinedException; //import org.eclipse.core.commands.contexts.Context; //import org.eclipse.core.commands.contexts.ContextManager; //import org.eclipse.core.commands.contexts.ContextManagerEvent; //import org.eclipse.core.commands.contexts.IContextManagerListener; //import org.eclipse.jface.bindings.Binding; //import org.eclipse.jface.bindings.BindingManager; //import org.eclipse.jface.bindings.Scheme; //import org.eclipse.jface.bindings.keys.KeyBinding; //import org.eclipse.jface.bindings.keys.KeySequence; //import org.eclipse.jface.bindings.keys.ParseException; //import org.eclipse.jface.contexts.IContextIds; //import org.eclipse.ui.tests.harness.util.UITestCase; // ///** // * A test case covering the scenario described in Bug 84763. The problem was // * that the context manager was exposing its internal data structures, and the // * binding manager was mangling them. Debug then responded to bad information in // * the <code>previouslyEnabledContextIds</code> property on the context event. // * // * @since 3.1 // */ //public final class Bug84763Test extends UITestCase { // // /** // * The binding manager to use in each test case. A new binding manager is // * created for each test case, and it is disposed when the test is over. // */ // private BindingManager bindingManager = null; // // /** // * The context manager to use in each test case. A new context manager is // * created for each test case, and it is disposed when the test is over. // */ // private ContextManager contextManager = null; // // /** // * The context manager listener to use in each test case. A new context // * manager listener is created for each test case, and it is disposed when // * the test is over. // */ // private IContextManagerListener contextManagerListener = null; // // /** // * The set of the previous context identifiers returned by the last context // * manager event. This value is set to <code>null</code> at the end of // * each test. // */ // private Set previousContextIds = null; // // /** // * Constructor for <code>Bug84763Test</code>. // * // * @param name // * The name of the test // */ // public Bug84763Test(final String name) { // super(name); // } // // /** // * Creates a new context manager and a binding manager for use in the test // * cases. // */ // protected void doSetUp() { // contextManager = new ContextManager(); // contextManagerListener = new IContextManagerListener() { // // public void contextManagerChanged( // ContextManagerEvent contextManagerEvent) { // previousContextIds = contextManagerEvent // .getPreviouslyActiveContextIds(); // if (previousContextIds != null) { // previousContextIds = new HashSet(previousContextIds); // } // } // // }; // contextManager.addContextManagerListener(contextManagerListener); // bindingManager = new BindingManager(contextManager, // new CommandManager()); // } // // /** // * Releases the context manager and binding manager for garbage collection. // */ // protected void doTearDown() { // contextManager = null; // contextManagerListener = null; // previousContextIds = null; // bindingManager = null; // } // // /** // * <p> // * Testst whether the binding manager will overwrite information in the // * context manager. In particular, whether the list of previous enabled // * context identifiers will be changed. // * </p> // * // * @throws NotDefinedException // * If the scheme we try to activate is not defined. // * @throws ParseException // * If "CTRL+F" cannot be parsed for some reason. // */ // public void testWindowChildWhenDialog() throws NotDefinedException, // ParseException { // // Define the contexts to use. // final Context dialogAndWindowsContext = contextManager // .getContext(IContextIds.CONTEXT_ID_DIALOG_AND_WINDOW); // dialogAndWindowsContext.define("In Dialogs and Windows", null, null); // final Context dialogContext = contextManager // .getContext(IContextIds.CONTEXT_ID_DIALOG); // dialogContext.define("In Dialogs", null, // IContextIds.CONTEXT_ID_DIALOG_AND_WINDOW); // final Context windowContext = contextManager // .getContext(IContextIds.CONTEXT_ID_WINDOW); // windowContext.define("In Windows", null, // IContextIds.CONTEXT_ID_DIALOG_AND_WINDOW); // final Context windowChildContext = contextManager.getContext("sibling"); // windowChildContext.define("Sibling", null, // IContextIds.CONTEXT_ID_WINDOW); // // // Force a binding computation. // final Scheme scheme = bindingManager.getScheme("na"); // scheme.define("name", null, null); // bindingManager.setActiveScheme(scheme); // final CommandManager commandManager = new CommandManager(); // final Command command = commandManager.getCommand("commandId"); // final ParameterizedCommand parameterizedCommand = new ParameterizedCommand( // command, null); // bindingManager.addBinding(new KeyBinding(KeySequence // .getInstance("CTRL+F"), parameterizedCommand, scheme.getId(), // windowChildContext.getId(), null, null, null, Binding.SYSTEM)); // bindingManager.getActiveBindingsFor((ParameterizedCommand) null); // // // Activate the dialog context and the sibling. // final Set activeContextIds = new HashSet(); // activeContextIds.add(IContextIds.CONTEXT_ID_DIALOG); // activeContextIds.add(IContextIds.CONTEXT_ID_DIALOG_AND_WINDOW); // activeContextIds.add(windowChildContext.getId()); // contextManager.setActiveContextIds(activeContextIds); // // // Force a binding computation. // bindingManager.getActiveBindingsFor((ParameterizedCommand) null); // // // Active the window context. // activeContextIds.remove(IContextIds.CONTEXT_ID_DIALOG); // activeContextIds.add(IContextIds.CONTEXT_ID_WINDOW); // contextManager.setActiveContextIds(activeContextIds); // // // Force a binding computation. // bindingManager.getActiveBindingsFor((ParameterizedCommand) null); // // /* // * Check to see what the listener got as the list of previously active // * context identifiers. // */ // assertEquals("There should have been 3 context ids active previously", // 3, previousContextIds.size()); // assertTrue("The previous contexts should include the dialog context", // previousContextIds.contains(IContextIds.CONTEXT_ID_DIALOG)); // assertTrue("The previous contexts should include the dialog context", // previousContextIds // .contains(IContextIds.CONTEXT_ID_DIALOG_AND_WINDOW)); // assertTrue("The previous contexts should include the dialog context", // previousContextIds.contains(windowChildContext.getId())); // System.out.println("testSiblingContext"); // } //}